home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Varsity Update 1998 August
/
SGI Varsity Update 1998 August.iso
/
docs6.4
/
relnotes
/
ftn90_fe
/
ch5.z
/
ch5
Wrap
Text File
|
1998-07-29
|
23KB
|
726 lines
- 1 -
7.2.1 MIPSpro Fortran 90 Front End Release Notes
- 2 -
5. _N_e_w__F_e_a_t_u_r_e_s__o_f__T_h_i_s__R_e_l_e_a_s_e
This chapter contains the differences between
this release and the 7.2 release of the MIPSpro
Fortran 90 compiler. It also summarizes the
differences between the 7.2 release and the 7.1
release of MIPSpro Fortran 90.
5.1 _N_e_w__F_e_a_t_u_r_e_s__i_n__M_I_P_S_p_r_o__7_._2_._1
5.1.1 _O_p_e_n_M_P__S_u_p_p_o_r_t MIPSpro Fortran 90 7.2.1
now supports the OpenMP application programming
interface (API) when used in conjunction with
the -_m_p flag. The -_m_p flag enables the
processing of the parallel (MP) directives,
including the original SGI/PCF directives as
well as the OpenMP directives. To selectively
disable one or the other set of directives, add
the following -MP option group flag to the -_m_p
flag:
-MP:old_mp=off
disable processing of the original SGI/PCF
directives, but retain the processing of
OpenMP directives.
-MP:open_mp=off
disable processing of the OpenMP directives,
but retain processing of the original
SGI/PCF directives.
You must have libmp from patchSG0002773
installed if you plan to work with OpenMP
support.
For more information about OpenMP support in
MIPSpro Fortran 90, please refer to the MIPSPro
7 Fortran 90 Commands and Directives Reference
Manual. For general information about OpenMP
please refer to the following web page:
http://www.openmp.org/
- 3 -
5.1.2 _I_G_N_O_R_E___T_Y_P_E___A_N_D___K_I_N_D__D_i_r_e_c_t_i_v_e
The directive causes the compiler to ignore type
and kind of the specified dummy argument when
resolving a generic interface name to a specific
procedure. The syntax for the directive is given
below. The compiler also ignores type and kind
on the specified dummy argument[s] when checking
all the specific interfaces in a generic
interface for ambiguous interfaces. Use of this
directive allows different invocations of a
procedure to pass different actual argument
types to the same dummy argument. Use of this
directive effectively turns off the strong type
checking for the specified dummy argument(s)
when resolving interfaces. This is useful when
a single routine (a copy routine for example) is
used with different argument types.
!DIR$ IGNORE_TYPE_AND_KIND [darg_name[,darg_name]]
If nothing is specified following the directive,
the directive applies to all dummy arguments
specified in the procedure. Otherwise, the
directive applies just to the specified dummy
arguments.
5.1.3 -_a_u_t_o__u_s_e _m_o_d_u_l_e__n_a_m_e[,_m_o_d_u_l_e__n_a_m_e]
_c_o_m_m_a_n_d_l_i_n_e _o_p_t_i_o_n
When the user specifies this on the commandline,
it is the same as if the user specified USE
module_name in every program unit, module
procedure, internal procedure and interface body
in the file(s) being compiled. This is useful
when an application contains hundreds of
routines and interface bodies and a programmer
wishes to include the same module in each
procedure and interface body. For example, a
module may be written to provide explicit
interfaces for a library used by the
application. In order to enable compile time
interface checking at each call to the library,
each procedure and interface body must have a
USE module_name inserted in it. This directive
allows for a module to be implicitly used in all
program units and interface bodies compiled
without requiring source modification.
- 4 -
Note: Use of this option may significantly
increase compile time.
5.1.4 _A_d_d_i_t_i_o_n_a_l__I_n_t_r_i_n_s_i_c__E_x_t_e_n_s_i_o_n_s
Provided in this release are the following
intrinsic extensions: SIND, TAND, COSD, ATAND,
ATAN2D, ACOSD, ASIND. They use and return degree
values rather than radians.
5.2 _M_I_P_S_p_r_o _7._2._1 _F_o_r_t_r_a_n _a_n_d _F_F_I_O _L_I_B_R_A_R_Y
_F_e_a_t_u_r_e_s
5.2.1 _E_x_p_l_i_c_i_t _M_I_P_S-_t_o-_C_R_A_Y _a_n_d _C_R_A_Y-_t_o-_M_I_P_S
_c_o_n_v_e_r_s_i_o_n _r_o_u_t_i_n_e_s Provided in this release
are interfaces for converting Cray floating
point data to and from MIPS IEEE data. Two
interfaces are provided:
+o A subroutine interface which Fortran 90 and
C users can call explicitly
+o An assign -N cray interface which allows
IRIX Fortran 90 users to access Cray
floating files implicitly (without changing
their program).
See the intro_conversion manpage for more
information.
5.2.2 _G_l_o_b_a_l__F_F_I_O__L_a_y_e_r These routines have
been ported directly from the T3E platform. See
the intro_ffio manpage for more information.
5.2.3 _A_d_d_i_t_i_o_n_a_l__P_O_S_I_X_._9__i_n_t_e_r_f_a_c_e__r_o_u_t_i_n_e
These are Fortran 90 subroutine interfaces to
signal handling system calls on all IRIX
platforms. They include:
- 5 -
IPXFWIFEXITSTATUS
IPXFWTERMSIG
IPXFWSTOPSIG
PXFALARM
PXFCALLSUBHANDLE
PXFGETSUBHANDLE
PXFKILL
PXFSIGACTION
PXFSIGADDSET
PXFSIGDELSET
PXFSIGEMPTYSET
PXFSIGFILLSET
PXFSIGISMEMBER
PXFSIGPENDING
PXFSIGSUSPEND
PXFSLEEP
PXFWIFEXITED
PXFWIFSIGNALED
PXFWIFSTOPPED
See the intro_pxf manpage for more information.
5.3 _N_e_w__F_e_a_t_u_r_e_s__i_n__M_I_P_S_p_r_o__7_._2
5.3.1 _N_e_w__C_o_m_p_i_l_e_r__F_r_o_n_t_-_e_n_d MIPSpro 7.2
Fortran 90 uses version 3.0 of the Cray
Fortran90 compiler front-end. It is source
compatible with the Cray Fortran90 compiler,
with minor exceptions noted below. MIPSpro 7.2
Fortran 90 now supports Cray Pointers and Cray's
Flexible File I/O.
5.3.1.1 _C_r_a_y__T_a_s_k_i_n_g__D_i_r_e_c_t_i_v_e_s MIPSpro 7.2
Fortran 90 supports many of the CMIC$ directives
found in Cray Fortran 90 including: !MIC$
NUMCPUS, !MIC$CNCALL, !MIC$ PARALLEL, !MIC$ DO
PARALLEL, !MIC$ ENDDO, !MIC$ DO ALL, !MIC$
GUARD, !MIC$ END GUARD, along with these
parameters: SHARED,PRIVATE, IF, MAXCPUS,
CHUNKSIZE, GUIDED, and SAVELAST.
- 6 -
5.3.1.2 _!_D_I_R__d_i_r_e_c_t_i_v_e_s_. MIPSPro 7.2 Fortran
90 also supports these CDIR$ directives from
Cray Fortran90: !DIR$ BOUNDS, !DIR$ NOBOUNDS,
!DIR$ FREE, !DIR$ FIXED !DIR$ ID, !DIR$ IVDEP,
!DIR$ NAME.
The !DIR$TASK and !DIR$NOTASK directives can be
used to control automatic parallelization using
-pfa. The TASK and NOTASK directives are ignored
unless the -cray_mp switch is specified to
enable Cray-style tasking directives.
5.3.2 _N_e_w__C_o_m_p_i_l_e_r__B_a_c_k_-_e_n_d MIPSpro 7.2
Fortran 90 uses the same optimizing back-end as
the other MIPSpro 7.2 compilers. As such it now
supports the newer command-line options for
controlling optimizations (-OPT, -LNO, -IPA,
etc.) See the f90(1) and ipa(5) man pages for
more information about these options.
5.3.2.1 _L_o_o_p__N_e_s_t__O_p_t_i_m_i_z_e_r MIPSpro Fortran
90 7.2 introduces a new flag group (-LNO: ...)
that controls optimization of loops. This flag
replaces the -sopt ... flags that performed
similar functionality in the 7.1 compiler. LNO
performs loop fission, loop fusion, cache
blocking, loop unrolling and other
optimizations. For an overview of this
functionality, please refer to the MIPSpro
Compiling, Debugging and Performance Tuning
Guide and f90(1) man pages.
5.3.2.2 _N_e_wSymbol Two new directives have
been added in MIPSpro 7.2 to control the way
symbols (i.e. variables that may be a Fortran
COMMON, or an automatic variable, but not a
formal and not an element of a structured type
like a struct or an array). are stored:
ALIGN_SYMBOL and FILL_SYMBOL. Their syntax is as
follows:
- 7 -
C*$* ALIGN_SYMBOL (symbol, L1cacheline)
C*$* ALIGN_SYMBOL (symbol, L2cacheline)
C*$* ALIGN_SYMBOL (symbol, page)
C*$* ALIGN_SYMBOL (symbol, <user-specified-power-of-two>)
C*$* FILL_SYMBOL (symbol, L1cacheline)
C*$* FILL_SYMBOL (symbol, L2cacheline)
C*$* FILL_SYMBOL (symbol, page)
C*$* FILL_SYMBOL (symbol, <user-specified-power-of-two>)
The ALIGN_SYMBOL directive aligns the start of
<symbol> at a specified alignment boundary. The
second argument in the directive may be one of
the keywords L1cacheline (machine specific
first-level cache line size, typically 32
bytes), L2cacheline (machine specific second-
level cache line size, typically 128 bytes),
page (machine specific page size, typically 16
Kbytes), or a user-specified power-of-two value.
The FILL_SYMBOL directive pads <symbol> with
additional storage so that the symbol is assured
not to overlap with any other data item within
the storage of the specified size. The
additional padding required is divided between
each end of the specified symbol.
5.3.2.3 _A_d_d_i_t_i_o_n_a_l _O_p_t_i_o_n_s _f_o_r _D_O_A_C_R_O_S_S _a_n_d _P_C_F
_D_i_r_e_c_t_i_v_e_s There are two additional options,
NEST and AFFINTY, to !$PAR PDO and !$DOACROSS in
MIPSpro 7.2 which can improve parallel
performance on Origin2000 distributed shared
memory architecture. Refer to the MIPSpro F90
Commands and Directives Manual for more
information.
5.3.2.4 _D_a_t_a__D_i_s_t_r_i_b_u_t_i_o_n__D_i_r_e_c_t_i_v_e_s The 7.2
F90 compiler supports data distribution
directives data distribution pragmas such as
distribute, and distribute-reshape, which allow
for explicit data parallelism to be exploited in
a multi-processing environment. This is in
addition to the multi- processing MP pragmas for
which support has been provided since 7.1. The
programmer's guide describes the data
distribution pragmas and their use on
multiprocessing machines such as the Origin
series.
- 8 -
5.3.2.5 _I_n_t_e_r _P_r_o_c_e_d_u_r_a_l _A_n_a_l_y_s_i_s (_I_P_A)
_O_p_t_i_m_i_z_a_t_i_o_n_s The 7.2 compiler introduces a
new flag group (-IPA: ...) that enables
interprocedural optimizations. Another flag
group (-INLINE: ...) controls the application
of subroutine inlining done within a file by the
standalone inliner, or by the main inliner if
-IPA options are enabled.
IPA can be used with optimization levels -O2 and
-O3, and will perform cross-file constant
propagation, cross-file inlining, and generate
information used by other optimization passes.
If you use separate steps to compile and link
(i.e. using -c when you compile and then linking
the .o files produced with a separate cc(1),
f90(1), or ld(1) command), then you need to use
-IPA (with or without any individual options)
for both the compile step and the link step.
For more information, please consult the ipa(5)
man page.
5.3.2.6 _N_e_w__-_O_P_T__c_o_n_t_r_o_l__g_r_o_u_p__o_p_t_i_o_n_s The
fast_complex, fast_trunc and fast_nint controls
have been added to the -OPT: ... control group.
For more information, please consult the f90(1)
man pages.
5.3.2.7 _N_e_w__D_E_B_U_G__o_p_t_i_o_n The -DEBUG option
control group has been implemented. -
DEBUG:div_check inserts runtime checks for
divide by zero. -DEBUG:trap_uninitialized (-
trapuv) inserts checks for uninitialized
variables. -DEBUG:subscript_check inserts checks
for out of bounds subscripts. For more
information, please refer to DEBUG_group(5).
5.3.3 _l_i_b_f_o_r_t_r_a_n__l_i_b_r_a_r_y The libfortran
library consists of those internally generated
library procedures made by the Fortran 90
compiler as well as intrinsic procedures that
users can invoke. All standard Fortran
intrinsics are provided as well as a subset of
Cray intrinsics which are extensions to the
standard. The library also includes the I/O
- 9 -
library currently being used on Cray platforms.
5.3.4 _P_r_e_p_r_o_c_e_s_s_i_n_g__w_i_t_h__f_t_p_p In previous
releases, all files were preprocessed using cpp.
For 7.2, files with the .F and .F90 suffix are
preprocessed with the ftpp preprocessor, by
default. Ftpp is a Fortran-aware version of the
standard cpp preprocessor. For example, ftpp is
aware of the constraints on the line length of
Fortran source files, and understands comments
and continuation lines. There are several
options which can be used to control
preprocessing for Fortran 90 files:
5.3.4.1 _-_f_t_p_p Process all Fortran files with
ftpp, regardless of suffix.
5.3.4.2 _-_c_p_p Process all Fortran files with
cpp, regarless of suffix
5.3.4.3 _-_m_a_c_r_o___e_x_p_a_n_d With ftpp, expand
preprocessor macros wherever they occur. By
default, macro expansion only occurs in
preprocessor directives.
5.3.5 _A_s_s_i_g_n__C_o_m_m_a_n_d The assign command
provides the ability to specify I/O processing
options for a file. Options include FFIO layer
selection, data conversion properties, and
buffer size.
5.4 _E_x_p_l_a_i_n__C_o_m_m_a_n_d__a_n_d__M_e_s_s_a_g_e__S_y_s_t_e_m__L_i_b_r_a_r_y
Provided as patchSG0002052, the explain command
provides the interface to retrieve and and
display messages during the compilation, loading
and execution of of a user's program. Currently,
the message system library contains only those
messages for the front-end and the runtime I/O
library. The explain command can only be used
for messages coming from the message system
library.
- 10 -
5.5 _C_r_a_y__M_o_d_u_l_e_s
Packaged as a separate image on the IRIX
Development Foundation CD, Modules is an
experimental environment which allows you to
install and use the 7.2 compilers under a
location other than the root directory (/). For
MIPSpro 7.2, only the compiler, dbx and
SpeedShop images can be installed under this
alternate location. Other product images, such
as the Insight books, license manager and
WorkShop should not be installed in this
alternate location. For more information about
modules please refer to the chapter on modules
in the IRIX Development Foundation Release
Notes, the modules release notes, or man
modules(1).
5.6 _N_e_w__A_u_t_o_m_a_t_i_c__P_a_r_a_l_l_e_l_i_z_a_t_i_o_n__O_p_t_i_o_n
The MIPSpro Auto Parallelizing Option (SC4-APO-
7.2) is a replacement product for the Power
Fortran 90, Power Fortran 77 and Power C
Analyzer products. It also works on C++
programs. When -pfa is specified on the command
line, Fortran 77 or Fortran90 programs are
automatically parallelized. When -pca is
specified, C or C++ programs are automatically
parallelized. The MIPSpro Automatic
Parallelization Option only supports the 64-bit
(-64) and new high performance 32-bit (-n32)
ABI's. The old 32-bit ABI (-32) is not supported
by this product.
5.7 _F_o_r__M_o_r_e__I_n_f_o_r_m_a_t_i_o_n
Please refer to the following manuals for more
detailed descriptions of of the features
mentioned in these release notes.
+o MIPSPro Fortran 90 Language Reference
Manual (Volumes I-III)
+o MIPSpro Fortran 90 Commands and Directives
Manual.
- 11 -